home *** CD-ROM | disk | FTP | other *** search
/ Mac-Source 1994 July / Mac-Source_July_1994.iso / C and C++ / Libraries / objects in c ƒ / Release Notes V1.02 < prev    next >
Encoding:
Text File  |  1989-03-07  |  5.4 KB  |  139 lines  |  [TEXT/KAHL]

  1.                            O.I.C  Objects-in-C
  2.                            ===================
  3.                        
  4.                       Shareware V1.02 Release Notes
  5.                       -----------------------------
  6.                     
  7.                     Copyright © John Wainwright, 1989
  8.                     
  9.                          454 West 20th Street, #2
  10.                             New York, NY  10011
  11.                          
  12.                          Compuserve : 72657,2534
  13.                          
  14.                           All rights reserved
  15.                        
  16.  
  17.                     
  18.     OIC version 1.01 is a primarily a bug fix release along with some 
  19.     cosmetic & housekeeping adjustments to better accomodate the
  20.     class kits under development (like Lisp & User Interface).
  21.     
  22.     All the files have changed, some only cosmetically, but it is 
  23.     advised that they all be adopted.  You can either replace the 
  24.     source files in your current projects or add your files to
  25.     the distributed v1.01 project.
  26.     
  27.     Some of the changes may require you to recode bits of your current
  28.     work but this has been kept to a minimum. In particular :
  29.     
  30.         - in anticipation of the Lisp stuff, the name of the method "eq"
  31.           has been changed to "equal" to be consistent Lisp conventions.
  32.           In Lisp, "eq" means same object (i.e. == in OIC) whereas
  33.           "equal" means isomorphically equal structures which is what I
  34.           used to call "eq" in V1.0 OIC.  Just globally replace "eq("
  35.           with "equal(".
  36.         
  37.         - the standard I/O has been made object-oriented, mainly to
  38.           centralize it.  A minimal class StdioStream has been added
  39.           that implements the generic "gprintf".  Two global instances
  40.           of StdioStream called "screen" and "error" are created during
  41.           the class's initialization, both of which just output to 
  42.           stdout.  Again, this doesnt add any functionality yet, but
  43.           makes it easier for people who want to use their own I/O
  44.           to add it in one place.  You can continue to use the standard
  45.           C I/O, of course, but if you want to use StdioStream, you
  46.           need to change "printf(" to "gprintf(screen, " and
  47.           "fprintf(stderr" to "gprintf(error" throughout.   The UI
  48.           class kit will come with a generalized stream support that
  49.           uses gprintf and will provide multiple, scrollable text windows,
  50.           with file backing, editability,  etc.
  51.     
  52.         - the file names of the class source files have been capitalized
  53.           to be consistent with the convention that class names are
  54.           capitalized.
  55.           
  56.     A simple NameSpace class kit has been added, which you might find
  57.     useful.  An extra include file called "names.h" declares externals
  58.     for this little kit.  Look at the sources for details.
  59.     
  60.     Some tips on using the THINK LSC debugger with OIC have been added to the 
  61.     manual.
  62.     
  63.     Below is a brief list of the changes.  Where appropriate the OIC manual
  64.     has been upgraded to reflect these changes (marked with change bars in
  65.     the document).
  66.           
  67.  
  68.             •    Alphabetized generics lists (generics.h & .c)
  69.             
  70.             •    Removed redundant free(seq) from deepInstances in IndexMixin.c
  71.             
  72.             •    Accessing deep inherited IV's bug fixed (oic.c)
  73.             
  74.             •    IsAKindOf() bug fixed (oic.c)
  75.             
  76.             •    _subs() subclasses method bug fixed (class.c)
  77.             
  78.             •    Added hashOf to String method for HashTable operation
  79.             
  80.             •    Changed the name of generic "eq" to "equal"
  81.             
  82.             •    Installed 'cantDo' mechanism.  If a method can't be found,
  83.                 invokes 'cantDo' which is handled in default by Object
  84.                 which prints an error message.  String specializes
  85.                 'cantDo' for testing. Added primitive "CanYouDo".
  86.                 
  87.             •    Added 'ApplyMethod' primitive to OIC manager.
  88.             
  89.             •    Added DependentsMixin class to provide change notification
  90.                 system.  (sometimes called "active-value" programming).
  91.                 
  92.             •    Added a #define for "method" to "static".  Changed all methods
  93.                 in example classes to declare themselves "method" not "static" -
  94.                 i.e. a cosmetic change.
  95.                 
  96.             •    Modified generic table structure to allow the keeping of a 
  97.                 list of all generics.  Added the "generic" typedef being a 
  98.                 pointer to such a table. (oic.c & .h)
  99.                 
  100.             •    Added conditionally compilable code to the method dispatching 
  101.                 functions that will ignore generics invoked on NULL.  
  102.                 
  103.             •    Added "forAll" as a synonym for "map" in Object.
  104.                 Added "forAllGen" which maps a generic (specified as a
  105.                 generic table reference) over a sequence with arguments.
  106.                 Made "forAll" (& "map") pass optional arguments (in a very
  107.                 inelegant way).  Added specialisations of "forAll" &
  108.                 "forAllGen" to List to make them much more efficient
  109.                 (it used to inherit the slow old ways from Object).
  110.                 
  111.             •    Added "SuperFrom" primitive to complement "Super".  This
  112.                 takes an extra class argument which says explicitly from which 
  113.                 ancestor the method should be inherited.
  114.                 
  115.             •    Added "IVs" macro.  This gets the IV structure pointers for ANY
  116.                 object.
  117.                 
  118.             •    Fixed nasty "srealloc" bug in memory.c.
  119.             
  120.             •    Added "StdioStream" class and changed all error messages
  121.                 & debugging printing to use print generics on this stream
  122.                 class rather than C library I/O.  This factors the error/
  123.                 debugging I/O into one simple class.
  124.                 
  125.             •    Made "dispose" in Object invalidate the object so it wont respond
  126.                 to generics any more.  All classes should eventually Super this 
  127.                 method.
  128.                 
  129.  
  130.             All the best!
  131.             
  132.                         John Wainwright
  133.                         454 West 20th Street, #2
  134.                         New York, NY  10011
  135.                         
  136.                         Compuserve : 72657,2534
  137.         
  138.         
  139.         All OIC files & documentation are Copyright © John Wainwright, 1988, 1989